package com.xxx.video.mine.activitys;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import com.xxx.video.R;
import com.xxx.video.commen.activitys.BaseActivity;
import com.xxx.video.commen.utils.StatusBarUtil;

import butterknife.BindView;

public class CommonWebViewActivity extends BaseActivity {

    @BindView(R.id.wv_common_web_view)
    WebView mWvCommonWebView;
    @BindView(R.id.pb_common_web_view)
    ProgressBar mPbCommonWebView;
    private String mUrl;

    @Override
    public int getContentLayout() {
        return R.layout.activity_common_webview;
    }

    @Override
    public void initToolbarData() {
        super.initToolbarData();
        showActionBar();
        StatusBarUtil.getInstance().setStatusBarTransparent(this, true);
        setIsShowActionbarLine(true);
        showLayoutStatus(1);
    }

    @Override
    public void initData(Bundle extras) {
        mUrl = extras.getString("Url");
        initWebView();
        mWvCommonWebView.loadUrl(mUrl);
        setActionBarTitle(R.string.tv_setting_activity_about_us);
    }

    private void initWebView() {
        /*
         * 设置webView
         */
        WebSettings settings = mWvCommonWebView.getSettings();

        settings.setSaveFormData(true);
        settings.setSavePassword(false);
        settings.setJavaScriptEnabled(true);
        settings.setMinimumFontSize(8);
        settings.setMinimumLogicalFontSize(8);
        settings.setDefaultFontSize(16);
        settings.setDefaultFixedFontSize(13);
        settings.setTextSize(WebSettings.TextSize.NORMAL);
        settings.setAllowFileAccess(true);
        settings.setBuiltInZoomControls(false);
        WebView.setWebContentsDebuggingEnabled(true);


        /*
         * 是否启动概述模式浏览界面，当页面宽度超过WebView显示宽度时，缩小页面适应WebView。默认false
         */
        settings.setLoadWithOverviewMode(true);
        /*
         *  是否支持ViewPort的meta tag属性，如果页面有ViewPort meta tag 指定的宽度，则使用meta tag指定的值，否则默认使用宽屏的视图窗口
         */
        settings.setUseWideViewPort(true);
        /*
         * 是否显示窗口悬浮的缩放控制，默认true
         */
        settings.setDisplayZoomControls(false);
        /*
         * 否允许Cache，默认false。考虑需要存储缓存，应该为缓存指定存储路径setAppCachePath
         */
        settings.setAppCacheEnabled(true);
        /*
         *
         * 基于WebView导航的类型使用缓存：正常页面加载会加载缓存并按需判断内容是否需要重新验证。
         * 如果是页面返回，页面内容不会重新加载，直接从缓存中恢复。setCacheMode允许客户端根据指定的模式来
         * 使用缓存。
         * LOAD_DEFAULT 默认加载方式
         * LOAD_CACHE_ELSE_NETWORK 按网络情况使用缓存
         * LOAD_NO_CACHE 不使用缓存
         * LOAD_CACHE_ONLY 只使用缓存
         */
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);
        /*
         * 指定WebView的页面布局显示形式，调用该方法会引起页面重绘。默认LayoutAlgorithm#NARROW_COLUMNS
         */
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        /*
         *支持自动加载图片
         */
        settings.setLoadsImagesAutomatically(true);
        /*
         * 是否存储页面DOM结构，默认false
         */
        settings.setDomStorageEnabled(true);
        /*
         *开启 database storage API 功能
         */
        settings.setDatabaseEnabled(true);
        /*
         * 设置页面的编码格式，默认UTF-8
         */
        settings.setDefaultTextEncodingName("UTF-8");
        /*
         *支持通过JS打开新窗口
         */
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        /*
         * 设置页面文字缩放百分比，默认100%
         */
        settings.setTextZoom(100);
        /*
         * 定位是否可用，默认为true。请注意，为了确保定位API在WebView的页面中可用，必须遵守如下约定:
         (1) app必须有定位的权限，参见ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION；
         (2) app必须提供onGeolocationPermissionsShowPrompt(String, GeolocationPermissions.Callback)回调方法的实现，在页面通过JavaScript定位API请求定位时接收通知。
         作为可选项，可以在数据库中存储历史位置和Web初始权限，参见setGeolocationDatabasePath(String).
         */
        settings.setGeolocationEnabled(true);
        /*
         * 当一个安全的来源（origin）试图从一个不安全的来源加载资源时配置WebView的行为。默认情况下
         * ，KITKAT及更低版本默认值为MIXED_CONTENT_ALWAYS_ALLOW，LOLLIPOP版本默认值MIXED_CONTENT_NEVER_ALLOW，
         * WebView首选的最安全的操作模式为MIXED_CONTENT_NEVER_ALLOW ，不鼓励使用MIXED_CONTENT_ALWAYS_ALLOW。
         */
        settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        /*
         * 去除滚动条
         */
        mWvCommonWebView.setHorizontalScrollBarEnabled(false);
        mWvCommonWebView.setVerticalScrollBarEnabled(false);

        /*
         * 用于处理一些加载展示等
         */
        mWvCommonWebView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                mPbCommonWebView.setVisibility(View.VISIBLE);
            }
        });
        mWvCommonWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                if (newProgress == 100) {
                    mPbCommonWebView.setVisibility(View.GONE);
                } else {
                    mPbCommonWebView.setProgress(newProgress);
                }
            }
        });
    }

}
